home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
9-Digit Zip Code Directory
/
9-Digit Zip Code Directory (American Business Information) (ABIZIP-12).ISO
/
z4src.zip
/
CINDEXWK.H
< prev
next >
Wrap
Text File
|
1989-08-29
|
6KB
|
191 lines
/* cindexwk.h working variables and defines
* ---------------------------------------------------------
* | C-INDEX/PC |
* | C-INDEX for Turbo C |
* | C-INDEX for Microsoft C |
* | Version 3.3 |
* | |
* | Trio Systems |
* | 953 E. Colorado Bl. Suite 531 |
* | Pasadena, CA 91106 |
* | 818/798-5567 |
* | |
* | (c) Copyright 1983, 1984, 1985, 1986, 1987, 1988, 1989 |
* ---------------------------------------------------------
*/
/* compiler dependent information */
/* define 16 bit integers as being type short - correct for most compilers */
#ifndef INTDEF
typedef short INT16;
#define INTDEF
#endif
/* internal flags */
/* general use */
#define TRUE 1
#define FALSE 0
/* for different kinds of adds */
#define CHANGE 1 /* change existing key */
#define SAVE 2 /* add/change key - which ever is appropriate */
#define UNQ 3 /* add unique data record */
#define DUP 4 /* add duplicate record */
#define CHGCUR 5 /* change existing current key */
/* status of cindex+ flags */
#define ADDJST 1 /* adjust() flag - means just added to node */
#define DELJST 2 /* adjust() flag - means just deleted */
#define DELON 1 /* means current pointer is back one due to delete */
#define DELOFF 0 /* means current pointer is ok */
#define BEGOFNDE -1 /* means current pointer is before keys in node */
/* buffering (bcb) defines */
#ifndef NULL
#define MYNULL 0 /* have to use something */
#else
#define MYNULL NULL /* use supplied null pointer definition */
#endif
#define NULLFD -1 /* null file descriptor */
#define NULLNDE -1 /* null node number */
#define NULLNEXT MYNULL /* null next pointer */
#define NULLPTR MYNULL /* null char ptr */
#define CLEAN 0 /* clean buffer - does not need disk write */
#define DIRTY 1 /* dirty bcb buffer - needs write to disk */
/* miscellaneous */
#define NEWNDE 1 /* new node - used in nodewrite */
#define OLDNDE 0 /* old node - used in nodewrite */
#define BYINLN sizeof (long) /* four bytes in long integer */
#define BYININ sizeof (int) /* two bytes in integer */
#define MAXFLDLEN 10240 /* 10k */
#define DATAPART 248 /* size of data chunks */
#define SPLITLMT 520 /* limit for split */
#define ENDLMT 1000 /* limit for split if last node being split */
#define DEFLEV 3 /* now open set to 3 */
#define DEFLEVMU 1 /* now open multi-user set to 1 */
#define HDRUPLEV 1
/* security level at which the header is written out when changed */
#define DEMOLIMIT 50 /* file size of 50k on demo version */
/* sizes of objects */
#define SZEREC sizeof (long) /* record number long value */
#define SZEDBYTE 1 /* size of data byte */
#define SZENDE sizeof (INT16) /* node pointer int value */
#define NODESZE 1024 /* size of node */
#define HDRSZE 1024 /* size of header */
#define HDRAREA sizeof(struct hdrrec) /* amount to read into buf */
#ifdef REMOVED
#define HDRAREA 28 /* size of header on disk */
#endif
#define NODEAREA sizeof(struct node) /* amount to read into node buf */
#define KEYSZE 256 /* 256 byte keys (including data) */
#define BIGBUF 1268 /* buffer for handling overflow due to insert */
/* macros */
#define logicval(a) ((a) > 0 ? 1 : -1) /* for function returns */
#define moveup(p) (p + (((int) *p) & 0xFF) + 1)
/* advances pointer to next key in node */
#define trnsrec(des, src) *(long *) (des) = *(long *) (src);
/* transfers a data record number */
#define trnsnde(des, src) *(INT16 *) (des) = *(INT16 *) (src);
/* transfers an index node pointer */
/* structure definitions */
struct node { /* universal node declaration */
INT16 level; /* level of node */
INT16 count; /* key count */
INT16 free; /* free space */
INT16 p0; /* p0 pointer */
INT16 forwrd; /* forward pointer */
INT16 revrse; /* reverse pointer */
char keystr[BIGBUF]; /* area for keys */
};
struct hdrrec { /* header record on disk */
char ck1;
INT16 hroot; /* root node pointer */
char ck2;
INT16 hfirst; /* first leaf node pointer */
char ck3;
INT16 hlast; /* last leaf node pointer */
char ck4;
INT16 hlevels; /* number of levels in tree */
char ck5;
INT16 hnext; /* next available node */
char ck6;
long hnxtdrec; /* next data record number */
char ck7;
INT16 hendofile; /* actual end of file */
char ck8;
long updatnum; /* last update number */
};
/* needed for high level words */
#define MAXDLEN 16318 /* 16k */
#define MAXLEVELS 3 /* level 3 is highest level */
#define INVALID 'I' /* for validation of psp */
#define PSPOPEN 'O' /* means file is open */
#define PSPCLOSED 'C' /* means file is closed */
#define goodindex(i) (i >= 1 && i <= MAXINDXS) /* one less */
#define gooddlen(x) (x >=0 && x <= MAXDLEN) /* max data len */
#define goodklen(s) (strlen(s) < MAXKLEN) /* one less for '\0' */
#define goodat(data, len) (data+len >= data) /* no overflow on address */
#define goodlevel(lev) (lev >= 0 && lev <= MAXLEVELS)
/* good security level */
/* multi user defines */
#define FLOCKBYTE 1 /* header file lock byte */
#define EXCLBYTE 0 /* exclusive file use lock byte */
#define SHAREOFF 512 /* offset for share bytes in header record */
#define NUMSHARE 127 /* number of share bytes */
#define UPDBYTE 1020 /* flag byte in header */
/* indicating upddisk in process */
#define SETUPD 13245 /* flag indicating upddisk in process */
#define RESETUPD 0 /* flag reseting upddisk in process byte */
#define UPDRETRY 5000 /* number of retries before giving up on upddisk */
#define OFF 'O'
#define LOCKED 'L'
#define UNLOCKED 'U'
/* ------------------------------------------------------- */
/* internal function prototypes */
#ifdef ANSI
#include "cndxprot.h" /* function prototypes */
#else
#include "cndxfunc.h" /* function declarations */
#endif